package com.yusvn.scm.goods.base.service;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.jfinal.kit.Kv;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Page;
import com.yusvn.scm.common.BaseService;
import com.yusvn.scm.common.constant.Const;
import com.yusvn.scm.common.kit.RetKit;
import com.yusvn.scm.common.model.ScmPz;

/**
 * SCM 基础设置- 配置调拨
 * @author liugz
 *
 */
public class ScmPzService extends BaseService {

	ScmPz dao = new ScmPz().dao();

	public Page<ScmPz> page(Kv kv) {
		Page<ScmPz> list = dao.template("scmPz.page", kv).paginate(getPage(kv), getLimit(kv));
		return list;
	}
	
	public boolean exists(long id, String mc, String bh) {
		mc = mc.toLowerCase().trim();
		String sql = "select count(id) as cnt from scm_pz where (mc = ? or bh=?) and id != ? ";
		Integer id2 = Db.use(Const.SCMDB).queryInt(sql, mc, bh, id);
		return id2 != null && id2>0;
	}
	
	public RetKit add(String jsonObj) {
		ScmPz pzfh = JSON.parseObject(jsonObj, ScmPz.class);
		
		if (exists(-1, pzfh.getMc(), pzfh.getBh() )) {
			return RetKit.fail("名称已经存在，请输入别的名称");
		}
		
		long id = Db.use(Const.SCMDB).queryLong("select nvl(max(id),0)+1 cnt from scm_pz ");
		pzfh.setId(id); //查询最大ID oracle不支持自增ID
		pzfh.setMc(pzfh.getMc().trim()); //
		pzfh.setBh(pzfh.getBh().trim()); //
		
		if(pzfh.use(Const.SCMDB).save()) {
			return RetKit.ok("添加成功");
		}
		
		return RetKit.fail("添加失败");
	}

	public RetKit update(String jsonObj) {
		ScmPz pzfh = JSON.parseObject(jsonObj, ScmPz.class);
		
		if (exists(pzfh.getId(), pzfh.getMc(), pzfh.getBh() )) {
			return RetKit.fail("名称已经存在，请输入别的名称");
		}
		
		pzfh.setMc(pzfh.getMc().trim());
		pzfh.setBh(pzfh.getBh().trim());
		
		if(pzfh.use(Const.SCMDB).update()) {
			return RetKit.ok("修改成功");
		}
		
		return RetKit.fail("修改失败");
	}

	public RetKit remove(String id) {
		if(dao.deleteById(id)) {
			return RetKit.ok("删除成功");
		}
		return RetKit.fail("删除失败");
	}

	public RetKit removeBatch(String idsStr) {
		JSONObject idsObj = JSON.parseObject(idsStr);
		JSONArray idsArr = idsObj.getJSONArray("ids");
		
		Object[][] paras = new Object[idsArr.size()][1];
		for(int i=0;i<idsArr.size();i++) {
			paras[i][0] = idsArr.get(i);
		}
		
		int[] cntArr = Db.use(Const.SCMDB).batch("delete from scm_pz where id=? ", paras, 100);
		
		int cntOk = 0;
		for(int i=0; i<cntArr.length; i++) {
			cntOk = cntOk + cntArr[i];
		}
		
		if(cntArr.length>0) {
			return RetKit.ok("成功删除 "+cntOk+" 条数据");
		}
		
		return RetKit.fail("批量删除失败");
	}
	
}
